package com.yq.homework.day25;



import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/25 16:23
 *
 * 准备一个文本文件，其中包含英文 ,数字, 中文字符。
 * 设计一个方法
 * public static void encodeFile(File encodingFile, File encodedFile);
 * 在这个方法中把encodingFile的内容进行加密，然后保存到encodedFile文件中。
 * 加密算法： 数字： 如果不是9的数字，在原来的基础上加1，比如5变成6, 3变成4 如果是9的数字，
 * 变成0 字母字符： 如果是非z字符，向右移动一个，比如d变成e, G变成H 如果是z，z->a, Z-A。
 * 字符需要保留大小写 非字母字符 比如',&^ 保留不变，中文也保留不变
 */

public class Demo03 {
    public static void main(String[] args) throws IOException {
        encodeFile(new File("a.txt"),new File("b.txt"));

    }
    public static void encodeFile(File encodingFile, File encodedFile) throws IOException {
        FileReader in = new FileReader(encodingFile);
        FileWriter out = new FileWriter(encodedFile);

        char[] chars = new char[1024];
        int readCount ;
        while ((readCount= in.read(chars))!=-1){
            String s = new String(chars, 0, readCount);
            char[] c1 = s.toCharArray();
            for (int i = 0; i < c1.length; i++) {
                //数字的加减
                if (c1[i]>='0' && c1[i]<'9'){
                    c1[i]= (char) (c1[i]+1);
                }
                if (c1[i]=='9'){
                    c1[i]='0';
                }
                //字母的加减
                if (c1[i]>='a' && c1[i]<'z' || c1[i]>='A' && c1[i]<'Z'){
                    c1[i]= (char) (c1[i]+1);
                }else  if (c1[i]=='z'){
                    c1[i]='a';
                }else if (c1[i]=='Z'){
                    c1[i]='A';
                }
            }
            out.write(c1);

        }
        in.close();
        out.close();

    }
}
